//核心代码

struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) : val(x), next(nullptr) {}
};

class Solution {
public:

    ListNode* FindKthToTail(ListNode* pHead, int k) {
        //双指针  指针带*号
        ListNode* l= pHead, *r= pHead;
        // 右指针指到第K个元素去
        while (k-- && r)  //k且r不为0/空
            r = r->next;
        // 一般来说K比链表短，K减到-1;若k>=0,说明K比链表长
        if (k>=0) return nullptr;
        //左右指针同时移动，指导r为空
        while(r){
            l = l->next;
            r = r->next;
        }
        return l;
    }
};